package com.ma.sort;

/**
 * 插入排序
 */
public class insertionSort {

    public static void insertion(int[] arr){
        if(arr==null||arr.length<2){
            return;
        }
        /**
         * 从0开始逐步扩大范围每次扩大范围都保持现范围有序，即每次扩进来的数对左进行依次比较
         */
        for(int i=0;i<arr.length;i++){
            for(int j=i-1;j>=0&&arr[j]>arr[j+1];j--){
                swap(arr,j,j+1);
            }
        }
    }
    /**
     * 俩元素交换
     * @param arr
     * @param i
     * @param j
     */
    public static void swap(int[] arr,int i,int j){
        arr[i]=arr[i]^arr[j];
        arr[j]=arr[i]^arr[j];
        arr[i]=arr[i]^arr[j];
    }


}
